package com.hospital.register.cmn.mapper;

import com.hospital.register.dto.cmn.DictExcelDto;
import com.hospital.register.dto.cmn.DictNameQueryDto;
import com.hospital.register.model.cmn.Dict;
import com.hospital.register.vo.cmn.DictChildVo;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;
import java.util.List;

/**
 * 访问字典数据
 *
 * @author 刘逸晖
 */
public interface DictMapper {

    /**
     * 根据父 id 查数据
     *
     * @param parentId 父 id
     * @return 字典列表
     */
    List<DictChildVo> selectByParentId(@Param("parentId") Long parentId);

    /**
     * 统计子节点的数量
     *
     * @param parentId 父级 id
     * @return 子节点的数量
     */
    Integer countByParentId(@Param("parentId") Long parentId);

    /**
     * 根据编码查询字典的 id
     *
     * @param dictCode 字典的编码
     * @return 字典的 id
     */
    Long selectIdByCode(@Param("dictCode") String dictCode);

    /**
     * 批量新增字典
     *
     * @param dictList 预新增的字典列表
     * @return 新增的记录数
     */
    int insertList(@Param("dictList") List<Dict> dictList);

    /**
     * 查询府河 Excel 格式的字典数据
     *
     * @return 字典列表
     */
    List<DictExcelDto> selectExcelData();

    /**
     * 批量删除字典数据
     *
     * @param idList 字典的 id 列表
     * @return 删除的字典数
     */
    int deleteList(@Param("idList") List<Long> idList);

    /**
     * 根据 id 列表统计字典数量
     *
     * @param idCollection id 列表
     * @return 字典数量
     */
    Integer countByIdCollection(@Param("idCollection") Collection<Long> idCollection);

    /**
     * 查询字典名称
     *
     * @param dto 查询条件
     * @return 字典名称
     */
    String selectName(DictNameQueryDto dto);

}
